1
身份与值:理解左值和右值
AI037Lesson 7
00:00

在 C++ 中,每个表达式的结果要么是 左值 ,要么是 右值。这一区别决定了表达式是指向对象的 身份 (它在哪里)还是其 (它包含的内容)。

1. 身份与内容

一个 左值 (定位值)表示具有持久内存地址的对象。可以将其想象为内存中的一个带标签的盒子。相反,一个 右值 (读值)是临时的;它代表一个临时结果或字面量,该字面量对程序员不可访问其地址。

容器左值地址:0x7FFE数据右值值:42转换

2. 功能性转换

虽然左值可以作为右值使用(编译器只需获取盒子内的值),但反过来是被禁止的。你不能在需要左值的地方使用右值——例如,你无法对像 &42 这样的字面量取地址,因为它缺乏持久的身份。

$$ \text{左值} \xrightarrow{\text{转换}} \text{右值} \quad (\text{允许}) $$

$$ \text{右值} \xrightarrow{\text{赋值}} \text{左值} \quad (\text{禁止}) $$

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>